/**
 * Author@ Cheng Feitian
 * Date: 2021-3-23
 * Description: 构造函数和析构函数
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

//对象的初始化和清理
//1.构造函数 进行初始化操作
class Person
{
    /**
     * @brief 1.构造函数
     * 没有返回值，不用写void
     * 函数名与类名相同
     * 构造函数可以有参数，可以发生重载
     * 创建对象的时候，构造函数会自动发生调用，而且只调用一次
     */
public:
    Person()
    {
        cout << "Person类的构造函数" << endl;
    }
    /**
     * @brief 2.析构函数 进行清理操作
     * 没有返回值 不写void
     * 函数名与类名相同 在名称前面加~
     * 析构函数没有参数，所以不可以重载
     * 对象在销毁前 会自动调用析构函数，而且只会调用一次
     */
    ~Person(){
        cout << "Person类的析构函数" << endl;
    }
};
//构造和析构都是必须有的实现，如果我们自己不提供，编译器会提供一个空实现的构造和析构
void test01()
{
    Person p;       //在栈上的数据，test01执行完毕后，释放这个对象
}

int main()
{

    test01();
    Person P;
    return 0;
}
